#include <iostream>

#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"


class OneLoop {
public:
//    std::unordered_map<int64_t,char> node_appear;
    std::vector<int> tgs;
    bool run(
            int64_t n
//            std::string&s1,std::string& s2
    ) {
        for(int i=0;i<n;i++){
            int in;std::cin>>in;
            tgs.push_back(in);
        }
        int ans=0;
        while (1)
        {
            bool all_same= true;
            for(int i=1;i<tgs.size();i++){
                if(tgs[i]!=tgs[0]){
                    all_same= false;
                    break;
                }
            }
            if(all_same){
                break;
            }
            for(int i=0;i<tgs.size();i++){
                tgs[i]/=2;
            }
            int back=tgs.back();
            for(int i=tgs.size()-1;i>=0;i--){
                if(i==0){
                    tgs[0]+=back;
                }else{
                    tgs[i]+=tgs[(i-1)];
                }
            }
            for(auto &i:tgs){
                if(i%2==1){
                    i++;
                    ans++;
                }
            }
        }
        printf("%d\n",ans);
        return false;
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int64_t a, b, c, d, e;
        //        std::cin >> a;
//        std::string s1,s2;
//        while (1){
        while (
//                std::getline(std::cin,s1)
                std::cin >> a
                ) {
//            std::getline(std::cin,s2);
            OneLoop l;
            if (!l.run(a)) {
//                return;
            }
        }


    }
};

int main() {

    //    bool cur_num= true;
    Solution().run();
    return 0;
}

